<?php
/**
 * @see ZendX_JQuery_View_Helper_UiWidget
 */
require_once "ZendX/JQuery/View/Helper/UiWidget.php";

/**
 * Помощник вида, реализующий html-редактор на основе JQuery markitUp
 * 
 * @category Phorm
 * @package JQuery_View_Helper
 * @name /Phorm/JQuery/View/Helper/MarkitUp.php
 * @copyright phorm.ru
 * @since 22.01.2011
 * @author vladimir@kachalov.net
 */

class Phorm_JQuery_View_Helper_MarkitUp extends ZendX_JQuery_View_Helper_UiWidget {
	
	/**
	 * Рисуем редактор
	 *
	 * @param string $id Id HTML-элемента
	 * @param string $value Значение элемента
	 * @param array $params Массив параметров, path: путь к библиотеке, set: название сета, skin: имя скина, name: имя переменной в сете
	 * @param array $attribs Массив атрибутов HTML-элемента
	 * @return string
	 */
    
	public function markitUp($id, $value = null, array $params = array(), array $attribs = array()) {
		
		$attribs = $this->_prepareAttributes($id, $value, $attribs);
		
		$params['path'] = isset($params['path']) ? $this->view->BaseUrl().$params['path'] : $this->view->BaseUrl().'/ui/markitup/';
		$params['skin'] = isset($params['skin']) ? $params['path'].'skins/'.$params['skin'].'/style.css' : $params['path'].'skins/simple/style.css';

        $js = sprintf('%s("#%s").livequery(function(){%s(this).markItUp(%s)});',
            ZendX_JQuery_View_Helper_JQuery::getJQueryHandler(),
            $attribs['id'],
            ZendX_JQuery_View_Helper_JQuery::getJQueryHandler(),
            $params['name']
        );
        
        $this->jquery->addJavascriptFile($this->view->BaseUrl().'/ui/js/jquery.livequery.min.js');
        $this->jquery->addJavascriptFile($params['path'].'jquery.markitup.js');
        $this->jquery->addJavascriptFile($params['path'].'sets/'.$params['set'].'/set.js');
        
        $this->jquery->addStylesheet($params['skin']);
        $this->jquery->addStylesheet($params['path'].'sets/'.$params['set'].'/style.css');

        $this->jquery->addOnLoad($js);

	    return $this->view->formTextarea($id, $value, $attribs);
		
	}
	
}